package PaqServidor;

import java.util.Vector;
import PaqServidor.Pregunta;
import java.util.ArrayList;

public class Tema {
	private String nombre;
	//private String id;
	public ArrayList<Pregunta> listaPreguntas = new ArrayList<Pregunta>();
        //private Integer contador = 0;
        /**
         * 
         * Constructor de la clase Tema.
         */
	public Tema() { }
        
        /**
         * 
         * Constructor con parámetros de la clase Tema.
         * @param _id: valor del identificador del tema.
         * @param _nombre : nombre del tema.
         */
        public Tema(String _nombre) {
            this.nombre = _nombre;
        }
        
        /*public Tema(String _id, String _nombre )
        {
            id = _id;
            nombre = _nombre;
        }*/
        
        /**
         * 
         * Descripción: método que obtiene el nombre del tema.
         * @return : devuelve el nombre del tema.
         */
        public String getNombre() {
            return this.nombre;
	}

        /**
         * 
         * Descripción: método que altera el valor del nombre del tema.
         * @param nombre : nuevo valor del nombre del tema.
         */
	public void setNombre(String nombre) {
            this.nombre = nombre;
	}

        /**
         * 
         * Descripción: método que obtiene el valor del identificador del tema.
         * @return : devuelve el identificador del tema.
         */
	/*public String getId() {
            return this.id;
	}*/

        /**
         * 
         * Descripción: método que altera el valor del identificador del tema.
         * @param id : nuevo valor del identificador del tema.
         */
	/*public void setId(String id) {
            this.id = id;
	}*/
        
        public PaqCORBA.Tema thisToCORBA() {
            PaqCORBA.Pregunta[] lpregs = new PaqCORBA.Pregunta[this.listaPreguntas.size()];
        
            for (int i = 0; i < this.listaPreguntas.size(); i++) {
                Pregunta p = this.listaPreguntas.get(i);
                lpregs[i] = p.thisToCORBA();
            }
            return new PaqCORBA.Tema(nombre, lpregs);
        }
        
        public Pregunta findPregunta(String pregunta) {       
        for ( Pregunta p : this.listaPreguntas ) {
            if (p.getEnunciado().equals(pregunta)) {
                return p;
            }
        }
        
        return null;
    }

    public void CORBAToThis(PaqCORBA.Tema t) {
        this.setNombre(t.nombre);
        ArrayList<Pregunta> lpregs = new ArrayList();
        for ( PaqCORBA.Pregunta p : t.lpreguntas ) {
            Pregunta preg = new Pregunta();
            preg.CORBAToThis(p);
            lpregs.add(preg);
        }
        //this.setId(t.id);
        this.listaPreguntas = lpregs;
    }

    public String[] listarPreguntas() {
        String pregs[] = new String[this.listaPreguntas.size()];
        for (int i = 0; i < this.listaPreguntas.size(); i++) {
            pregs[i] = this.listaPreguntas.get(i).getEnunciado();
        }
        return pregs;
    }

    public void editPregunta(String old_enunciado, String new_enunciado, short numRespuestas, String[] respuestas, boolean[] oks) {
        Pregunta p = this.findPregunta(old_enunciado);
        p.editPregunta(new_enunciado, numRespuestas, respuestas, oks);
    }

    public String[] listarRespuestasDescripcion(String pregunta) {
        Pregunta p = this.findPregunta(pregunta);
        return p.listarRespuestasDescripcion();
    }

    public boolean[] listarRespuestasCorrecta(String pregunta) {
        Pregunta p = this.findPregunta(pregunta);
        return p.listarRespuestasCorrecta();
    }
}